//继承
package main

import (
	"fmt"
)

//普通人类
type Human struct {
	name string
	sex  string
	age  int
	sal  uint
}

//引用传递或指针传递
func (p *Human) setAge(age int) {
	p.age = age
}

//定义超人: 普通人的属性+超人的特点
type SuperMan struct {
	Human       //继承： 内嵌
	flight uint // 战斗力
}

type SuperMan2 struct {
	h      Human //非继承
	flight uint  // 战斗力
}

func main() {
	s1 := SuperMan{Human{"clark", "man", 30, 1000}, 5}
	fmt.Println(s1)
	s1.setAge(300)
	fmt.Println(s1)
	s2 := SuperMan2{Human{"clark2", "man", 30, 1000}, 5}
	fmt.Println(s2)
	s2.h.setAge(400) //间接操作，只是内部元素对象的操作
	fmt.Println(s2)
}
